% visualize_fragmentation.m
% 绘制内存使用率和碎片化相关的时序图。

function fig = visualize_fragmentation(history, type_code_to_plot)
    
    fig = figure('Name', sprintf('内存使用率与碎片化分析 (Cache Type %d)', type_code_to_plot));
    tiledlayout(3, 1);

    % 提取特定缓存类型的数据
    steps = history.steps;
    usage = history.memory_usage(:, type_code_to_plot) * 100; % 转换为百分比
    num_frags = history.num_free_blocks(:, type_code_to_plot);
    max_block = history.max_free_block_size(:, type_code_to_plot);

    % 绘图1: 内存使用率
    ax1 = nexttile;
    plot(ax1, steps, usage, 'b-', 'LineWidth', 1.5);
    title('内存使用率 (%)');
    xlabel('调度步骤 (Step)');
    ylabel('使用率 (%)');
    grid on;
    ylim([0 100]);

    % 绘图2: 碎片数量
    ax2 = nexttile;
    plot(ax2, steps, num_frags, 'r-', 'LineWidth', 1.5);
    title('空闲块数量 (碎片化程度)');
    xlabel('调度步骤 (Step)');
    ylabel('空闲块数量');
    grid on;

    % 绘图3: 最大连续可用空间
    ax3 = nexttile;
    plot(ax3, steps, max_block, 'g-', 'LineWidth', 1.5);
    title('最大可用空闲块大小');
    xlabel('调度步骤 (Step)');
    ylabel('大小 (Bytes)');
    grid on;
end